#ifndef __SYS_TIMESLICE_H
#define __SYS_TIMESLICE_H

#include <stdint.h>


#define TASK_NUMBER 17    //任务数量

typedef enum
{
	TASK_1 = 0U,
	TASK_2,
	TASK_3,
	TASK_4,
	TASK_5,
	TASK_6,
	TASK_7,
	TASK_8,
	TASK_9,
	TASK_10,
	TASK_11,
	TASK_12,
	TASK_13,
	TASK_14,
	TASK_15,
	TASK_16,
	TASK_17
}sys_task_list_t;

typedef struct
{
	uint8_t enable_flag;       // 任务是否被开启，任务不被开启无法运行 (非0为任务已经开启)
	uint16_t interval_time;    // 任务运行间隔时间 (单位ms)
	int16_t last_time;        // 任务上一次运行时间 (单位ms)
	uint16_t into_times;        // 进入任务的次数
	uint8_t ready_flag;        // 任务是否准备好运行 (非0为任务已经开启)
	uint16_t out_time;         // 任务暂时停止运行多少时间 (单位ms)
	void (*f)(void);           // 指向该任务需要运行的函数 (不知道怎么指见sys.c里面的 System_Init())
}TaskStruct;

extern TaskStruct task_structs[TASK_NUMBER];    //声明任务的结构体数组

extern uint16_t gTickTime;

void System_TaskInit(void);
void System_TaskUpdate(void);
void System_TaskRun(void);
void System_TaskOut(uint8_t task_number,uint32_t stop_time);
void System_TaskDisable(uint8_t task_number);
void System_TaskEnable(uint8_t task_number);

#endif
